package com.shr.xsunmvc.db.sqlutil;

import java.util.List;
import java.util.Map;

import com.shr.xsunmvc.db.Table;

/**
 * the util class to generate sql string
 * @author sun haoran
 *
 */
public abstract class GenerateSql {
	
	/**
	 * 产生从表 table中查询columns的语句
	 * @param table
	 * @param columns
	 * @return
	 */
	public abstract String forFindById(Table table, String columns);
	/**
	 * 产生根据主键删除table的语句
	 * @param table
	 * @return
	 */
	public abstract String forDeleteById(Table table);
	
	/**
	 * 保存一条记录的语句
	 * @param table 
	 * @param attrs 要更新的属性map表
	 * @param sql 更新语句
	 */
	public abstract void forSave(Table table, Map<String, Object> attrs, StringBuilder sql);
	
	/**
	 * 更新一条记录的语句
	 * @param table 
	 * @param attrs 要更新的属性map表
	 * @param sql 更新语句
	 * @param paras 更新的值，以list形式返回
	 */
	
	public abstract void forUpdate(Table table, Map<String, Object> attrs, StringBuilder sql, List<Object> paras);

	
	public boolean isPrimaryKey(String colName, String[] pKeys) {
		for (String pKey : pKeys) {
			if (colName.equalsIgnoreCase(pKey)) {
				return true;
			}
		}
		return false;
	}
	
}
